package br.com.JZSolution.domineduplex.gui.dialogos;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

import br.com.JZSolution.domineduplex.DomineDuplex;
import br.com.JZSolution.domineduplex.controle.ControladorDePreferencias;
import br.com.JZSolution.domineduplex.gui.preferencias.PainelDeIdentificacaoPreferencias;
import br.com.JZSolution.domineduplex.gui.preferencias.PainelDeLoginPreferencias;
import br.com.JZSolution.domineduplex.gui.preferencias.PainelDeRecepcaoPreferencias;
import br.com.JZSolution.domineduplex.gui.util.ComunicadorDeMensagens;

public class PreferenciasDialogo extends JDialog {
	private static final long serialVersionUID = 3509096776216120275L;
	
	private PainelDeRecepcaoPreferencias painelReceberArquivos;
	private PainelDeIdentificacaoPreferencias painelDeEnvio;
	private PainelDeLoginPreferencias painelLogin;
	private ControladorDePreferencias cdp = ControladorDePreferencias.getInstance();
	
	public PreferenciasDialogo(){
		super(DomineDuplex.getInstance().getMainframe());
		this.setLayout(new BorderLayout());
		
		JTabbedPane jtabbedPane = new JTabbedPane();
		jtabbedPane.setTabPlacement(JTabbedPane.LEFT);
		
		painelReceberArquivos = new PainelDeRecepcaoPreferencias(this,cdp.getPropriedade(ControladorDePreferencias.PORTA),cdp.getPropriedade(ControladorDePreferencias.PASTA));
		painelDeEnvio = new PainelDeIdentificacaoPreferencias();
		painelLogin = new PainelDeLoginPreferencias();
		this.add(painelLogin,BorderLayout.CENTER);
		
		jtabbedPane.addTab("Identificação", painelDeEnvio);
		jtabbedPane.addTab("Recebimento", painelReceberArquivos);
		jtabbedPane.addTab("Contatos", painelLogin);
		jtabbedPane.addTab("Banda", new JPanel());
		jtabbedPane.addTab("Rede", new JPanel());
		jtabbedPane.addTab("Geral", new JPanel());
		
		JPanel painelBotoes = new JPanel();
		JButton salvar = new JButton("Salvar");
		salvar.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				
				String porta = painelReceberArquivos.getCampoPortaServer().getText().trim();
				boolean erro = false;
				if(porta.length() <= 5 && porta.length() >= 4 ){
					try{
						Integer.parseInt(porta);
					}catch (NumberFormatException nfe) {
						erro = true;
					}
				}else{
					erro = true;
				}
				if(erro){ //Verifica a porta e não salva nem fecha o diálogo para correção
					ComunicadorDeMensagens.erro("Porta inválida! A porta possui 5 dígitos ex: 60441");
					return;
				}
				
				DomineDuplex dmd = DomineDuplex.getInstance();
		    	String pasta = painelReceberArquivos.getCampoPastaBase().getText();
		    	String usuario = painelDeEnvio.getNomeRemetente();
		    	dmd.setDiretorioDeRecepcao(pasta);
		    	dmd.setPortaDeRecepcao(Integer.parseInt(porta));
		    	dmd.setUsuario(usuario);
		    	
		    	cdp.setPropriedade(ControladorDePreferencias.PORTA, porta);
		    	cdp.setPropriedade(ControladorDePreferencias.PASTA, pasta);
		    	cdp.setPropriedade(ControladorDePreferencias.USUARIO, usuario);
		    	painelLogin.salvarInfos();
		    	cdp.salvarPreferencias();
		    	dispose();
			}
		});
		
		JButton cancelar = new JButton("Fechar");
		cancelar.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		
		painelBotoes.add(cancelar);
		painelBotoes.add(salvar);
		painelBotoes.setBorder(BorderFactory.createEtchedBorder());
		
		this.add(jtabbedPane,BorderLayout.CENTER);
		this.add(painelBotoes, BorderLayout.SOUTH);
		
		this.setMinimumSize(new Dimension(570,300));
		this.setLocationRelativeTo(DomineDuplex.getInstance().getMainframe());
		this.setTitle("Preferências");
		this.setVisible(true);
		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
	}
}
